import { obj2Str, int2Date, str2Date, parseAge } from '@/utils/datetime'

/** 格式化文章发布时间
 * @param {String} dateTimeString 要格式化的时间
 * @param {String} formatString 时间显示格式
 * @returns {String}
 */
export function ArticleDateTimeFormater(dateTimeString, formatString) {
  if (!dateTimeString || dateTimeString === '') {
    return ''
  }
  formatString = formatString || '{y}-{m}-{d} {h}:{i}:{s}'
  return obj2Str(new Date(dateTimeString), formatString)
}

/** 格式化时间戳
 * @param {(number)} dateTimeNum
 * @returns {string}
 */
export function DateTimeNumFormater(dateTimeNum) {
  if (!dateTimeNum) return ''
  return int2Date(dateTimeNum)
}

/** 格式化ilas的性别格式
 * @param {String} value
 * @returns {String}
 */
export function SexFormater(value) {
  if (!value || value === '') return ''
  // toUpperCase 转大写， toLowerCase 转小写
  value = value.toLowerCase()
  if (value === 'm') {
    return '男'
  } else if (value === 'f') {
    return '女'
  } else {
    return '未知'
  }
}

/** 格式化微信的性别格式
 * @param {String} value
 * @returns {String}
 */
export function SexWXFormater(value) {
  if (!value || value === '') return ''
  // toUpperCase 转大写， toLowerCase 转小写
  // value = value.toLowerCase()
  if (value === '0') {
    return '未知'
  } else if (value === '1') {
    return '男'
  } else {
    return '女'
  }
}

/** 将O库返回的类似20210302形式的日期时间格式成yyyy-MM-dd的格式
 * @param {String} dateString 时间值
 * @returns {String}
 */
export function DateFormater(dateString) {
  if (!dateString || dateString === '' || dateString.length !== 8) {
    return ''
  }
  const year = dateString.substring(0, 4)
  const month = dateString.substring(4, 6)
  const day = dateString.substring(6, 8)
  return year + '-' + month + '-' + day
}

/** 将O库返回的类似20210302形式的日期时间格式成yyyy-MM-dd(30岁)的格式
 * @param {Date} dateBirthday 时间值
 * @returns {String}
 */
export function BirthdayAgeFormater(birthdayString) {
  if (!birthdayString || birthdayString === '' || birthdayString.length !== 8) {
    return ''
  }
  const dateString = DateFormater(birthdayString)
  return dateString + ' (' + parseAge(dateString) + ' 岁)'
}

/** 格式化馆藏地点代码
 * @param {String} value
 * @returns {String}
 */
export function AddressCodeFormater(value) {
  if (!value || value === '') return ''
  value = value.toUpperCase()
  if (value === '') {
    return '信州区图书馆'
  } else if (value === 'XZQT') {
    return '总馆'
  } else if (value === '001') {
    return '外借室'
  } else if (value === '002') {
    return '期刊室'
  } else if (value === '003') {
    return '少儿阅览室'
  } else if (value === '004') {
    return '古籍室'
  } else if (value === '005') {
    return '水南分馆'
  } else if (value === '006') {
    return '东市分馆'
  } else if (value === '007') {
    return '西市分馆'
  } else if (value === '008') {
    return '北门分馆'
  } else if (value === '009') {
    return '朝阳分馆'
  } else if (value === '010') {
    return '沙溪分馆'
  } else if (value === '011') {
    return '秦峰分馆'
  } else if (value === '013') {
    return '灵溪分馆'
  } else if (value === '014') {
    return '茅家岭分馆'
  } else {
    return ''
  }
}

/** 活动列表的时间格式化，输入数据是 2022-07-24 20:00:00
 * @param {String} datetime
 * @returns {String} 以指定格式返回的字符串
 */
export function ActivityListStampFormater(datetime) {
  if (!datetime || datetime === '') return ''
  const d = str2Date(datetime, 'yyyy-MM-dd HH:mm:ss')
  let resultString
  resultString = d.getFullYear().toString().substring(2, 4) + '/'
  let m = d.getMonth() + 1
  m = m < 10 ? '0' + m : m
  resultString += m + '/'
  let day = d.getDate()
  day = day < 10 ? '0' + day : day
  resultString += day
  const w = ['日', '一', '二', '三', '四', '五', '六'][d.getDay()]
  resultString += ' 周' + w

  let h = d.getHours()
  if (h >= 0 && h < 10) {
    h = '上午 0' + h + '点'
  } else if (h >= 10 && h < 12) {
    h = '上午 ' + h + '点'
  } else {
    h = '下午 ' + h + '点'
  }
  resultString += h

  let min = d.getMinutes()
  if (min >= 0 && min < 10) {
    min = '0' + min + '分'
  } else {
    min = min + '分'
  }
  resultString += min
  return resultString
}

// 表头样式设置
export function setHeadClass() {
  return 'background:#768ba0;color:#FFFFFF;line-height:20px;'
}

// 表格样式设置
export function setRowClass(rowIndex) {
  if ((rowIndex + 1) % 2 === 0) {
    // 偶数
    return 'row-even'
  } else {
    // 奇数
    return 'row-odd'
  }
}

// 表格单元格样式设置
export function setCellClass() {
  return 'padding:2px 0;'
}
